// 二维前缀和
#include <iostream>

using namespace std;
const int N = 5010;
int sum[N][N];
int n, r;

int main()
{
    cin >> n >> r;
    int xx = 0, yy = 0;
    for(int i = 0; i < n; ++i)
    {
        int x, y, w;
        cin >> x >> y >> w;
        sum[x + 1][y + 1] += w;
        xx = max(x + 1, xx), yy = max(yy, y + 1);
    }
    // 进行二维前缀和预处理
    for(int i = 1; i <= xx; ++i)
        for(int j = 1; j <= yy; ++j)
            sum[i][j] += sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1];
    if(r >= xx && r >= yy)
    {
        cout << sum[xx][yy] << endl;
        return 0;
    }
    else if(r == 0)
    {
        cout << 0 << endl;
        return 0;
    }
    // 遍历各种可能性
    int ans = 0;
    for(int i = 1; i <= xx; ++i)
        for(int j = 1; j <= yy; ++j)
        {
            int i2 = min(xx, i + r - 1);
            int j2 = min(yy, j + r - 1);
            ans = max(ans, sum[i2][j2] - sum[i - 1][j2] - sum[i2][j - 1] + sum[i - 1][j - 1]);
        }
    cout << ans << endl;
    return 0;
}